Intro Characters start at 21990+0xA870 (8002B600)

Before...
0x0	4	body
0x4	4	head
0x8	2	text1
0xA	2	text2
0xC	2	text3
0xE	2	UNUSED
0x10	4	1= special set run only at end of game


!!!Now!!!	half size!
0x0	1	body
0x1	1	head
0x2	2	text1
0x4	2	text2
0x6	2	text3
0x8	1	1= special set run only at end of game
0x9	1	UNUSED

increment is either *A or:
SLL	R2,R1,0x2	*4
ADDU	R2,R2,R1	+1
SLL	R2,R2,0x1	*2	basically, only this line changes!

+-+-+-+
note:	below is not a full dASM.  Just bits to guide hacking stuff

!!!first call is 16 bond during intros.  Will need to do cuba to get tux!!!


+-+

//7F0187A0:	4D2D0
SLL	T5,T5,0x2	->	""	',',0x1		table offset
ADDIU	T6,T6,B600
ADDU	A0,T5,T6
LW	T0,0000 (A0)	->	LB	""		body
LUI	T1,8003
SLL	T8,T7,0x4	(offset for animation entries)
ADDU	T1,T1,T8
LW	T9,0004 (A0)	->	LB	T9,0001 (A0)	head

04D2D3	0001	40
04D2DC	0001	80
04D2EC	0004	80990001


//7F019FA8:	4EAD8	part of text recall routine
SLL	T3,T3,0x2	->	""	',',0x1		table offset
ADDU	A0,A0,T3
JAL	7F0C1DD8
LHU	A0,B608 (A0)	->	""	',B602 (')	text1

04EADB	0001	40
04EAE7	0001	02


//7F01A13C:	4EC6C	part of text recall
SLL	T3,T3,0x2	->	""	',',0x1		table offset
...
...
...
...
BEQ	S2,R0,7F01A1A0
LHU	A0,B60A (A0)	->	""	',B604 (')	text2

04EC6F	0001	40
04EC87	0001	04


//7F01A2A4:	4EDD4	part of text recall
SLL	T9,T9,0x2	->	""	',',0x1		table offset
ADDU	A0,A0,T9
JAL	7F0C1DD8
LHU	A0,B60C (A0)	->	""	',B606 (')	text3

04EDD7	0001	40
04EDE3	0001	06


//7F019028:	4DB58	test flag
ADDIU	S2,R0,0014	->	""	',',000A
//7F019040:	4DB70
LW	T3,0010 (V0)	->	LB	T3,0008 (V0)	flag
BEQL	T3,R0,7F019068
LW	T6,0000 (V0)	->	LB	""
//7F0190A8:	4DBD8
LW	T2,0000 (T1)	->	LB	""
//7F0190E8:	4DC18
LW	T8,0000 (T7)	->	LB	""
//7F01914C:	4DC7C
LW	T5,0000 (T4)	->	LB	""
//7F0191B0:	4DCE0
LW	T2,0000 (T1)	->	LB	""
//7F019214:	4DD44
LW	T9,0000 (T8)	->	LB	""
//7F01927C:	4DDAC
LW	T5,0000 (T4)	->	LB	""


04DB5B	0001	0A
04DB70	0009	804B00085160000880
04DB88	0001	80
04DB94	0001	80
04DBD8	0001	81
04DC18	0001	81
04DC7C	0001	81
04DCE0	0001	81
04DD44	0001	83
04DDAC	0001	81

+-+-+-+-+-+-

Use the unused byte to indicate endpoint

7F019040:
LB	T3,0008 (V0)	credits flag
BEQL	T3,R0,7F019068
LB	T6,0000 (V0)	T6=body
//7F01904C:
LW	T4,B5FC (T4)
ADDIU	T5,V1,0001
BNEL	T4,R0,7F019068
LB	T6,0000 (V0)	T6=body
...
//7F019064:
LB	T6,0000 (V0)	T6=body
ADDIU	AT,R0,0027	MALE MOONRAKER...
BNEL	T6,AT,7F019098
LW	T9,0000 (S0)
...
//7F019098:
ADDIU	AT,R0,0028	Female Moonraker
MULTU	T9,S2
MFLO	T0
ADDU	T1,S1,T0
LB	T2,0000 (T1)	T2=body
BNEL	T6,AT,7F0190D8
LW	T5,0000 (S0)
...
//7F0190D8:
ADDIU	AT,R0,000E
MULTU	T5,S2
MFLO	T6
ADDU	T7,S1,T6
LB	T8,0000 (T7)	T8=body
BNEL	T8,AT,7F01913C
LW	T2,0000 (S0)
...
//7F01913C:
ADDIU	AT,R0,000D	
MULTU	T2,S2
MFLO	T3
ADDU	T4,S1,T3
LB	T5,0000 (T4)	T5=body
BNEL	T5,AT,7F0191A0
LW	T9,0000 (S0)
...
//7F0191A0:
ADDIU	AT,R0,000F	
MULTU	T9,S2
MFLO	T0
ADDU	T1,S1,T0
LB	T2,0000 (T1)	T2=body
BNEL	T2,AT,7F019204
LW	T6,0000 (S0)
...
//7F019204:
ADDIU	AT,R0,000C	
MULTU	T6,S2
MFLO	T7
ADDU	T8,S1,T7
LB	T9,0000 (T8)	T9=body
BNEL	T9,AT,7F019268
LW	V1,0000 (S0)
...
//7F019268:
ADDIU	A0,R0,0018
LUI	T6,8003
MULTU	V1,S2
MFLO	T3
ADDU	T4,S1,T3
//7F01927C:
*LB	T5,0000 (T4)
*BGEZ	T5,7F019290
*NOP

++++++++++++++++++++++++++

reducing the animation table as well!

8002B8BC	table - last entry ani= -1

target format:	0x8
0x0	2	ani
0x2	2	val 1 literal unsigned
0x4	2	val 2 fixed point (div by 10000)
0x6	2	valid types: 0=unarmed, 1=pistols, 2=rifles

43960000	300	012C
43780000	248	00F8
43160000	150	0096
42F00000	120	0078
42C40000	98	0062
424C0000	51	0033
42140000	37	0025
41F80000	31	001F
41D00000	26	001A
41A80000	21	0015
3F800000	1	2710
3F68F5C3	0.91	238C
3F666666	0.9	2328


//7F018718:		get a count of the elements in table
LUI	A0,8003
ADDIU	A0,A0,B8BC
SLL	T5,R0,0x4	useless incrementation...
ADDU	T6,A0,T5	ani1
LW	T0,0000 (T6)
LUI	V1,8003
ADDIU	V1,V1,B5F0
SW	R0,0000 (V1)
BLTZ	T0,7F018760
OR	V0,R0,R0
ADDIU	T9,V0,0001
//7F018744:	GET A TOTAL OF ANI ENTRIES
SLL	T7,T9,0x4	increment
ADDU	T8,A0,T7
LW	T1,0000 (T8)
SW	T9,0000 (V1)
OR	V0,T9,R0
BGEZL	T1,7F018744
ADDIU	T9,V0,0001
//7F018760:
JAL	7000A450	ret. V0=rand
NOP
LUI	V1,8003
ADDIU	V1,V1,B5F0	V1 already equal to this, but eh...
LW	T2,0000 (V1)	T9 already set to this, but eh...
LUI	T4,8003
LW	T4,B5E8 (T4)
DIVU	V0,T2
MFHI	T3
LUI	AT,8003
SW	T3,B5EC (AT)	save selected ani slot
LUI	T7,8003
SLL	T5,T4,0x2
LW	T7,B5EC (T7)	T7=select ani.
LUI	T6,8003
...
//7F0187B0:
LUI	T1,8003
SLL	T8,T7,0x4	offset to data
ADDU	T1,T1,T8
LB	T9,0001 (A0)
LW	T1,B8C8 (T1)	T1=wep. type flag
SW	T1,006C (SP)
BNEZ	T2,7F0187D4
NOP
BREAK

//7F018C98:	retrieve for use
LUI	T9,8003
LW	T9,B5EC (T9)	T9=selected ani.
LUI	T4,8003
ADDIU	T4,T4,B8BC
SLL	T3,T9,0x4	->offset
ADDU	V0,T3,T4	p->ani.
LW	T2,0000 (V0)	T2=ani.
LWC1	F4,0008 (V0)	F4=val2
MTC1	R0,F6
LUI	A1,8003
SLL	T8,T2,0x2	ani*offset
ADDU	A1,A1,T8
LUI	A0,8003
LW	A0,B5F4 (A0)
LW	A1,9D6C (A1)
LW	A3,0004 (V0)	val1
LW	A2,0070 (SP)
SWC1	F4,0010 (SP)
JAL	7F06FCA8	ALL VALUES MUST BE CONVERTED BY HERE!
SWC1	F6,0014 (SP)
//7F018CE8:
+ +
 +
+ +
HACKITY HACK!
//7F018718:	4D248	get a count of the elements in table
3C038003	*LUI	V1,8003
2464B8BC	*ADDIU	A0,V1,B8BC
00005025	*OR	T2,R0,R0	reset counter
//7F018724:	4D254	loopus
000A78C0	*SLL	T7,T2,0x3	increment
008FC021	ADDU	T8,A0,T7
87090000	*LH	T1,0000 (T8)
AC6AB5F0	*SW	T2,B5F0 (V1)	SAVE TOTAL
0523FFFB	BGEZL	T1,7F018724	-5
254A0001	*ADDIU	T2,T2,0001
//7F01873C:	4D274	GET rand. entry #
0C002914	JAL	7000A450
8C6CB5E8	LW	T4,B5E8 (V1)	T4=entry for character
004A001B	DIVU	V0,T2
00005810	MFHI	T3
3C018003	LUI	AT,8003
AC2BB5EC	SW	T3,B5EC (AT)	save selected ani slot
//7F018754:	4D284	do the conversion for val2, save to SP+14
000B10C0	SLL	V0,T3,0x3
00411021	ADDU	V0,V0,AT
9442B8C0	LHU	V0,B8C0 (V0)	AT=val2
44822000	MTC1	V0,F4
3C01461C	LUI	AT,461C
24214000	ADDIU	AT,AT,4000
44816000	MTC1	AT,F12
46802220	CVT.S.W	F8,F4
460C4103	DIV.S	F4,F8,F12	F4=val2/10000
E7A40014	SWC1	F4,0014 (SP)
00000000	NOP
00000000	NOP
00000000	NOP
00000000	NOP
	LUI	T7,8003
	SLL	T5,T4,0x2
	LW	T7,B5EC (T7)	T7=select ani.
	LUI	T6,8003
	...
//7F0187B0:	4D2E0
	LUI	T1,8003
000FC0C0	*SLL	T8,T7,0x3	offset to data
	ADDU	T1,T1,T8
	LB	T9,0001 (A0)
8129B8C3	*LB	T1,B8C3 (T1)	T1=wep. type flag
	SW	T1,006C (SP)
	BNEZ	T2,7F0187D4
	NOP
	BREAK

SP+14 isn't used from above to here, so could commandeer
//7F018C98:	4D7C8	retrieve for use
3C0C8003	*LUI	T4,8003
8D99B5EC	*LW	T9,B5EC (T4)	T9=selected ani.
001958C0	*SLL	T3,T9,0x3	->offset
016C1021	ADDU	V0,T3,T4	p->ani.
9447B8BE	*LHU	A3,B8BE (V0)	A3=val1
44873000	MTC1	A3,F6
844AB8BC	*LH	T2,B8BC (V0)	T2=ani.
00000000	NOP
00000000	NOP
46803320	CVT.S.W	F12,F6
000AC080	-SLL	T8,T2,0x2	ani*offset
01982821	*ADDU	A1,T4,T8
C7A40014	LWC1	F4,0014 (SP)	converted val2 from before
8D82B5F4	*LW	A0,B5F4 (T4)
8CA59D6C	-LW	A1,9D6C (A1)
44076000	MFC1	A3,F12
8FA60070	-LW	A2,0070 (SP)
E7A40010	-SWC1	F4,0010 (SP)
0FC1BF2A	-JAL	7F06FCA8	ALL VALUES MUST BE CONVERTED BY HERE!
AFA00014	*SW	R0,0014 (SP)
